package xcity

import (
	"gitee.com/xiaoyutab/xgotool/optional/xcache"
	"gitee.com/xiaoyutab/xgotool/optional/xlog"
	"gitee.com/xiaoyutab/xgotool/xstring"
)

// 根据名称返回ID
//
//	name	城市名称
//	is_like	是否模糊匹配
func Name2Id(name string, is_like bool) uint {
	cache_key := xcache.Key("xcity.name2id", name, is_like)
	if xcache.Exists(cache_key) {
		id := xstring.ToUint(xcache.GetString(cache_key))
		if id > 0 {
			return id
		}
	}
	// 从数据库中进行查询
	if _default.DB == nil {
		return 0
	}
	// 获取id
	db := _default.DB.Table(_default.CityName)
	if is_like {
		db = db.Where("`name` like ?", "%"+name+"%")
	} else {
		db = db.Where("name", name)
	}
	cit := City{}
	err := db.Order("ad_code ASC").Find(&cit).Error
	if err != nil {
		xlog.Alert("城市信息查询错误", err)
		return 0
	}
	return cit.Adcode
}
